import axios from 'axios'
import {
  Toast, Indicator
} from 'mint-ui'
import store from '@/store'
// 创建axios实例
axios.defaults.withCredentials = true
const service = axios.create({
  timeout: 100000, // request timeout
  withCredentials: true
})
// 请求拦截器，在发送请求前增加相关的配置
service.interceptors.request.use(config => {
  Indicator.open()
  return config
}, error => {
  // 处理请求错误
  Promise.reject(error)
})

// 返回
service.interceptors.response.use(
  response => {
    /**
     * 下面的注释为通过response自定义code来标示请求状态，当code返回如下情况为权限有问题，登出并返回到登录页
     * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
     */
    Indicator.close()

    const res = response.data
    const status = res.status
    if (status === 0) {
      return res.data
    } else {
      return res
    }
  },
  err => {
    if (err.response.status === 504 || err.response.status === 404) {
      err.message = '服务器故障'
      store.dispatch('FedLogOut').then(() => {})
    } else if (err.response.status === 403) {
      err.message = '访问权限不够'
    } else {
      err.message = '未知错误'
    }
    Toast({
      message: err.message,
      type: 'error',
      title: '错误'
    })
    return Promise.reject(err)
  })
export default service
